﻿#ifndef PUYWINDOW_H
#define PUYWINDOW_H

#include <QMainWindow>
#include <QCloseEvent>
#include <QMessageBox>
#include <QDebug>
#include <QList>
#include <QStringList>
#include <QTableWidget>
#include <QTableWidgetItem>
#include "buybtnform.h"
#include <QMap>
#include <QFile>
#include <QByteArray>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QTime>
#include <QDate>
namespace Ui {
class PuyWindow;
}

class PuyWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit PuyWindow(QWidget *parent = nullptr);
    ~PuyWindow();

public slots:
    void getUserInfo(const QString& userName, const int& userIndex);

    void closeEvent(QCloseEvent *event);//关闭窗口事件，退出时改变用户登录状态

    //商品购买界面
    void getAdd(const int& row, const int& count);
    void getSub(const int& row, const int& count);
    void updataGood();
    //购物车
    void getAddCart(const int& row, const int& count);
    void getSubCart(const int& row, const int& count);
    void updataMap();
    //订单界面
    void updataOrder();


signals:
    //商品购买界面
    void sendRowBuyAdd(const int& index, const int& row, const int& inventory);
    void sendRowBuySub(const int& index, const int& row, const int& inventory);
    //购物车界面
    void sendRowBuyAddCart(const int& index, const int& row, const int& inventory);
    void sendRowBuySubCart(const int& index, const int& row, const int& inventory);


private slots:
    void on_buyGoodInterfBtn_clicked();

    void on_reflushBtn_clicked();

    void on_shoppingCartInterfaBtn_clicked();

    void on_reflushCartBtn_clicked();

    void on_cartBuyBtn_clicked();

    void on_buyRecordInterfaBtn_clicked();

    void on_contactBtn_clicked();

private:
    Ui::PuyWindow *ui;
    QString u_Name; //存储已登录用户的用户名
    int u_Index;    //存储已登录用户的身份索引， 0为员工， 1位管理员
    //商品购买界面变量
    QStringList goodStringList; //用于存放单个用户信息，用户信息：账号 密码 身份 登录状态
    QList<QStringList> goodList;    //用于存放所有用户信息
    QList<int> buyRowRecord;  //用于存放购买的行号
    QList<int> buyCountRecord; //用于存放购买的数量
    QList<QStringList> tmpBuyList; //临时存放购物车数据的列表
    QMap<QString, QList<QStringList>> buyMap; //存放所有用户的购物车信息
    float totelPrices;    //总价
    //购物车界面变量
    float totelPricesCart;    //购物车商品总价
    QStringList cartStringList; //用于存放单条购物车信息，商品名 当前售价 小类 数量
    QList<QStringList> cartList;    //用于存放用户购物车信息
    QMap<QString, QList<QStringList>> cartMap; //存放所有用户的购物车信息
    QList<int> buyRowRecordCart;  //用于存放购买的行号
    QList<int> buyCountRecordCart; //用于存放购买的数量
    //购买记录界面变量
    float totelPricesPaid;    //购物车商品总价
    QStringList paidStringList; //用于存放单条购物车信息，时间 商品名 当前售价 小类 数量
    QList<QStringList> paidList;    //用于存放用户订单信息
    QMap<QString, QList<QStringList>> paidMap; //存放所有用户的订单信息

};

#endif // PUYWINDOW_H
